import { PGlite } from '@electric-sql/pglite';
import dotenv from 'dotenv';

// 加载环境变量
dotenv.config();

async function checkTables() {
  console.log('正在检查 PGlite 数据库中的表...');
  
  // 获取数据库 URL
  const dbUrl = process.env.POSTGRES_URL;
  if (!dbUrl) {
    throw new Error('未设置 POSTGRES_URL 环境变量');
  }
  
  // 检查是否为 PGlite URL
  const isPGliteUrl = dbUrl.startsWith('pglite://');
  if (!isPGliteUrl) {
    throw new Error('这个脚本仅适用于 PGlite 数据库。请更新 POSTGRES_URL 以使用 pglite:// 协议。');
  }
  
  // 配置 PGlite 选项
  const options = { dataDir: dbUrl.replace('pglite://', '') };
  
  // 初始化 PGlite 客户端
  console.log('正在初始化 PGlite...');
  const db = new PGlite(options);
  
  // 获取所有表名
  console.log('正在查询所有表...');
  const result = await db.query(`
    SELECT table_name 
    FROM information_schema.tables 
    WHERE table_schema = 'public'
    ORDER BY table_name;
  `);
  
  if (result.rows.length === 0) {
    console.log('数据库中没有找到表。请运行迁移命令：pnpm db:migrate:pglite');
  } else {
    console.log('数据库中的表：');
    result.rows.forEach((row, index) => {
      console.log(`${index + 1}. ${row.table_name}`);
    });
    
    // 检查表结构
    for (const row of result.rows) {
      const tableName = row.table_name;
      console.log(`\n表 '${tableName}' 的结构：`);
      
      const columnsResult = await db.query(`
        SELECT column_name, data_type, is_nullable
        FROM information_schema.columns
        WHERE table_schema = 'public' AND table_name = $1
        ORDER BY ordinal_position;
      `, [tableName]);
      
      columnsResult.rows.forEach(col => {
        console.log(`- ${col.column_name}: ${col.data_type} (${col.is_nullable === 'YES' ? '可为空' : '不可为空'})`);
      });
    }
  }
}

// 运行检查
checkTables().catch(console.error); 